import {createSlice} from '@reduxjs/toolkit'
/**
 * createSlice
 * 创建reducer的切片
 * @param {object} options 通过不同属性来指定它的配置
*/
const stuSlice = createSlice({
  name: 'stu', // 自动生成 action 中的 type
  initialState: { //state 初始值
    name: '张三',
    age: 18,
    sex: '男',
    address: '广东深圳'
  },
  reducers: { //指定state的各种操作
    setName(state, action){
      /**
       * 通过不同方式指定不同操作
       * @param {object} state 代理对象，可直接修改 => state.name = '李四'
      */
      // state.name = '李四' 
      // console.log('action',action) // {payload: "王五",type: "stu/setName"}
      state.name = action.payload
    },
    setAge(state, action){
      state.age = 20
    }
  }
})

/**
 * 切片对象自动生成action
 * actions中存储的是slice自动生成的action创造器（函数）
 * 调用函数自动生成action对象
 * action 对象结构 {payload: param,type: "stu/funName"}
*/
export const {setName, setAge} = stuSlice.actions
// const nameAction = setName('哈哈') // {payload: "哈哈",type: "stu/setName"}
// const ageAction = setAge(20) // // {payload: 20,type: "stu/setAge"}
// console.log('stuSlice.actions',nameAction,ageAction)

export const {reducer: stuReducer} = stuSlice